// user.js
const app = getApp()

Page({
  data: {
    userInfo: {
      isLogin: false,
      avatar: '',
      nickname: '',
      phone: '',
      isVip: false,
      vipExpireTime: '',
      gender: 1,
      birthday: '',
      city: ''
    },
    formattedLoginTime: '',
    formattedVipExpireTime: '',
    userStats: {
      courseCount: 0,
      acupointCount: 0,
      orderCount: 0
    },
    // 移除自动刷新相关数据
    menuItems: [
      {
        id: 'courses',
        title: '播放记录',
        icon: '📚',
        url: '/pages/my-courses/my-courses',
        show: true
      },
      {
        id: 'collection',
        title: '我的收藏',
        icon: '⭐',
        url: '/pages/collection/collection',
        show: true
      },
      {
        id: 'orders',
        title: '我的订单',
        icon: '📦',
        url: '/pages/order/order',
        show: true
      },
      {
        id: 'address',
        title: '收货地址',
        icon: '📍',
        url: '/pages/address/address',
        show: true
      },
      {
        id: 'wallet',
        title: '我的钱包',
        icon: '💰',
        url: '/pages/wallet/wallet',
        show: false
      },
      {
        id: 'points',
        title: '我的积分',
        icon: '🏆',
        url: '/pages/points/points',
        show: false
      },
      {
        id: 'membership',
        title: '会员中心',
        icon: '👑',
        url: '/pages/membership/membership',
        show: true
      },
      {
        id: 'settings',
        title: '设置',
        icon: '⚙️',
        url: '/pages/settings/settings',
        show: true
      },
      {
        id: 'feedback',
        title: '意见反馈',
        icon: '💬',
        url: '/pages/feedback/feedback',
        show: true
      },
      {
        id: 'customer-service',
        title: '在线客服',
        icon: '🎧',
        url: '/pages/customer-service/customer-service',
        show: true
      },
      {
        id: 'about',
        title: '关于我们',
        icon: 'ℹ️',
        url: '/pages/about/about',
        show: true
      }
    ]
  },

  onLoad() {
    this.loadUserInfo()
    this.loadUserStats()
  },

  onShow() {
    this.loadUserInfo()
    this.loadUserStats()
    // 页面显示时刷新统计数据
    this.refreshStats()
  },
  
  onHide() {
    // 页面隐藏时的清理工作
  },

  // 加载用户信息
  loadUserInfo() {
    // 从全局数据获取用户信息
    const globalUserInfo = app.getUserInfo()
    console.log('全局用户信息:', globalUserInfo)
    
    if (globalUserInfo && globalUserInfo.isLogin) {
      console.log('用户ID:', globalUserInfo.userId || globalUserInfo.id)
      // 格式化登录时间
      const formattedTime = this.formatLoginTime(globalUserInfo.loginTime)
      
      // 处理VIP状态 - 支持多种字段格式
      let isVip = false
      if (globalUserInfo.isVip === true || globalUserInfo.isVip === 1 || 
          globalUserInfo.isvip === 1 || globalUserInfo.is_vip === 1) {
        isVip = true
      }
      
      console.log('VIP状态检查:', {
        isVip: globalUserInfo.isVip,
        result: isVip
      })
      
      // 格式化VIP有效期
      const formattedVipExpireTime = this.formatVipExpireTime(globalUserInfo.vipExpireTime)
      
      this.setData({ 
        userInfo: {
          ...globalUserInfo,
          isLogin: true,
          isVip: isVip
        },
        formattedLoginTime: formattedTime,
        formattedVipExpireTime: formattedVipExpireTime
      })
      
      
      // 获取VIP状态信息
      this.loadVipStatus()
    } else {
      // 未登录状态
      this.setData({ 
        userInfo: {
          isLogin: false,
          avatar: '',
          nickname: '',
          phone: '',
          isVip: false,
          vipExpireTime: '',
          gender: 1,
          birthday: '',
          city: ''
        },
        formattedLoginTime: '',
        formattedVipExpireTime: ''
      })
    }
  },

  // 加载VIP状态
  loadVipStatus() {
    if (!this.data.userInfo.isLogin) {
      return
    }

    // 如果页面已经有VIP状态，就不需要重新设置
    if (this.data.userInfo.isVip !== undefined) {
      return
    }

    // 直接从全局用户信息获取VIP状态，如果已经存在就不需要请求API
    const globalUserInfo = app.getUserInfo()
    if (globalUserInfo && globalUserInfo.isVip !== undefined) {
      const formattedVipExpireTime = this.formatVipExpireTime(globalUserInfo.vipExpireTime)
      this.setData({
        'userInfo.isVip': globalUserInfo.isVip,
        'userInfo.vipExpireTime': globalUserInfo.vipExpireTime || '',
        formattedVipExpireTime: formattedVipExpireTime
      })
      return
    }

    // 如果全局信息中没有VIP状态，则从API获取
    wx.request({
      url: 'http://localhost:8082/user/membership',
      method: 'GET',
      header: {
        'Authorization': 'Bearer ' + wx.getStorageSync('token')
      },
      success: (res) => {
        if (res.data && res.data.code === 200) {
          const membershipData = res.data.data
          const isVip = membershipData.isVip || false
          const vipExpireTime = membershipData.vipExpireTime || ''
          const formattedVipExpireTime = this.formatVipExpireTime(vipExpireTime)
          
          // 更新用户信息中的VIP状态
          this.setData({
            'userInfo.isVip': isVip,
            'userInfo.vipExpireTime': vipExpireTime,
            formattedVipExpireTime: formattedVipExpireTime
          })
          
          // 同时更新全局用户信息
          const globalUserInfo = app.getUserInfo()
          if (globalUserInfo) {
            globalUserInfo.isVip = isVip
            globalUserInfo.vipExpireTime = vipExpireTime
            app.setUserInfo(globalUserInfo)
          }
        } else {
          // API失败时设置为非VIP
          this.setData({
            'userInfo.isVip': false,
            'userInfo.vipExpireTime': '',
            formattedVipExpireTime: ''
          })
        }
      },
      fail: (err) => {
        console.error('获取VIP状态失败:', err)
        // 网络错误时设置为非VIP
        this.setData({
          'userInfo.isVip': false,
          'userInfo.vipExpireTime': '',
          formattedVipExpireTime: ''
        })
      }
    })
  },

  // 格式化登录时间
  formatLoginTime(loginTime) {
    if (!loginTime) return ''
    
    const now = new Date()
    const login = new Date(loginTime)
    const diff = now - login
    
    const minutes = Math.floor(diff / (1000 * 60))
    const hours = Math.floor(diff / (1000 * 60 * 60))
    const days = Math.floor(diff / (1000 * 60 * 60 * 24))
    
    if (minutes < 1) {
      return '刚刚登录'
    } else if (minutes < 60) {
      return `${minutes}分钟前登录`
    } else if (hours < 24) {
      return `${hours}小时前登录`
    } else {
      return `${days}天前登录`
    }
  },

  // 格式化VIP有效期
  formatVipExpireTime(expireTime) {
    if (!expireTime) return ''
    
    try {
      const date = new Date(expireTime)
      
      // 检查日期是否有效
      if (isNaN(date.getTime())) {
        return '有效期未知'
      }
      
      // 格式化为中文日期格式：2025年12月1日
      const year = date.getFullYear()
      const month = date.getMonth() + 1
      const day = date.getDate()
      
      return `${year}年${month}月${day}日`
    } catch (error) {
      console.error('格式化VIP有效期失败:', error)
      return '有效期未知'
    }
  },

  // 加载用户统计
  loadUserStats() {
    // 直接从全局数据获取登录状态，避免setData异步导致的时序问题
    const globalUserInfo = app.getUserInfo()
    const isLogin = globalUserInfo && globalUserInfo.isLogin
    
    console.log('开始加载用户统计数据，登录状态:', isLogin)
    if (!isLogin) {
      this.setData({
        userStats: {
          courseCount: 0,
          acupointCount: 0,
          orderCount: 0
        }
      })
      return
    }

    // 并行获取各种统计数据
    this.loadCourseCount()
    this.loadCollectionCount()
    this.loadOrderCount()
  },

  // 获取课程数量
  loadCourseCount() {
    // 暂时设置为0，因为课程API可能不存在
    this.setData({
      'userStats.courseCount': 0
    })
  },

  // 获取收藏数量
  loadCollectionCount() {
    const app = getApp()
    const userInfo = app.getUserInfo()
    const userId = userInfo.userId || userInfo.id
    
    if (!userId) {
      console.error('用户ID不存在，无法获取收藏数量')
      this.setData({
        'userStats.acupointCount': 0
      })
      return
    }
    
    wx.request({
      url: `http://localhost:8081/user/CollAll?userid=${userId}`,
      method: 'GET',
      success: (res) => {
        console.log('获取收藏数量API响应:', res.data)
        let collectionCount = 0
        if (res.statusCode === 200 && Array.isArray(res.data)) {
          collectionCount = res.data.length
        } else {
          // API失败时显示0
          collectionCount = 0
        }
        
        console.log('收藏数量:', collectionCount)
        this.setData({
          'userStats.acupointCount': collectionCount
        })
      },
      fail: (err) => {
        console.error('获取收藏数量失败:', err)
        // 显示0
        this.setData({
          'userStats.acupointCount': 0
        })
      }
    })
  },

  // 获取订单数量
  loadOrderCount() {
    const app = getApp()
    const userInfo = app.getUserInfo()
    
    if (!userInfo) {
      console.log('用户未登录，无法获取订单数量')
      this.setData({
        'userStats.orderCount': 0
      })
      return
    }
    
    const userId = userInfo.userId || userInfo.id
    
    if (!userId) {
      console.error('用户ID不存在，无法获取订单数量')
      this.setData({
        'userStats.orderCount': 0
      })
      return
    }
    
    wx.request({
      url: `http://localhost:8081/product/OrderByUserId?userId=${userId}`,
      method: 'GET',
      success: (res) => {
        console.log('获取订单数量API响应:', res.data)
        let orderCount = 0
        if (res.statusCode === 200 && Array.isArray(res.data)) {
          orderCount = res.data.length
        } else {
          // API失败时显示0
          orderCount = 0
        }
        
        console.log('订单数量:', orderCount)
        this.setData({
          'userStats.orderCount': orderCount
        })
      },
      fail: (err) => {
        console.error('获取订单数量失败:', err)
        // 显示0
        this.setData({
          'userStats.orderCount': 0
        })
      }
    })
  },


  // 刷新统计数据
  refreshStats() {
    // 直接从全局数据获取登录状态
    const globalUserInfo = app.getUserInfo()
    const isLogin = globalUserInfo && globalUserInfo.isLogin
    
    if (isLogin) {
      // 延迟一点时间再刷新，确保页面完全加载
      setTimeout(() => {
        this.loadCourseCount()
        this.loadCollectionCount()
        this.loadOrderCount()
      }, 500)
    }
  },

  // 用户信息点击
  onUserInfoTap() {
    if (!this.data.userInfo.isLogin) {
      wx.navigateTo({
        url: '/pages/login/login'
      })
    } else {
      wx.navigateTo({
        url: '/pages/profile/profile'
      })
    }
  },

  // VIP状态点击
  onVipStatusTap() {
    if (!this.data.userInfo.isLogin) {
      wx.showModal({
        title: '提示',
        content: '请先登录',
        success: (res) => {
          if (res.confirm) {
            wx.navigateTo({
              url: '/pages/login/login'
            })
          }
        }
      })
      return
    }

    // 跳转到会员中心
    wx.navigateTo({
      url: '/pages/membership/membership'
    })
  },

  // 导航到指定页面
  navigateTo(e) {
    const url = e.currentTarget.dataset.url
    if (url) {
      wx.navigateTo({
        url: url
      })
    }
  },

  // 菜单项点击
  onMenuItemTap(e) {
    const item = e.currentTarget.dataset.item
    if (!item || !item.url) return
    
    // 检查是否需要登录
    if (this.needLogin(item.id) && !this.data.userInfo.isLogin) {
      wx.showModal({
        title: '提示',
        content: '请先登录',
        success: (res) => {
          if (res.confirm) {
            console.log('用户确认登录，准备跳转到登录页面')
            wx.navigateTo({
              url: '/pages/login/login',
              success: () => {
                console.log('成功跳转到登录页面')
              },
              fail: (err) => {
                console.error('跳转到登录页面失败:', err)
                wx.showToast({
                  title: '页面跳转失败',
                  icon: 'none'
                })
              }
            })
          }
        }
      })
      return
    }
    
    // 特殊处理某些功能
    if (item.id === 'share') {
      this.shareApp()
    } else {
      wx.navigateTo({
        url: item.url,
        success: () => {
          console.log('成功跳转到:', item.url)
        },
        fail: (err) => {
          console.error('跳转失败:', err)
          wx.showToast({
            title: '页面跳转失败',
            icon: 'none'
          })
        }
      })
    }
  },

  // 统计项点击
  onStatsTap(e) {
    const type = e.currentTarget.dataset.type
    if (!this.data.userInfo.isLogin) {
      wx.showModal({
        title: '提示',
        content: '请先登录',
        success: (res) => {
          if (res.confirm) {
            wx.navigateTo({
              url: '/pages/login/login'
            })
          }
        }
      })
      return
    }

    const urlMap = {
      courses: '/pages/my-courses/my-courses',
      acupoints: '/pages/collection/collection', // 我的收藏
      orders: '/pages/order/order'
    }

    const url = urlMap[type]
    if (url) {
      wx.navigateTo({ 
        url,
        success: () => {
          console.log('成功跳转到:', url)
        },
        fail: (err) => {
          console.error('跳转失败:', err)
          wx.showToast({
            title: '页面跳转失败',
            icon: 'none'
          })
        }
      })
    }
  },

  // 判断是否需要登录
  needLogin(itemId) {
    const needLoginItems = ['courses', 'collection', 'orders', 'address', 'wallet', 'points', 'membership']
    return needLoginItems.includes(itemId)
  },


  // 分享应用
  shareApp() {
    wx.showShareMenu({
      withShareTicket: true,
      menus: ['shareAppMessage', 'shareTimeline']
    })
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.loadUserInfo()
    this.loadUserStats()
    wx.stopPullDownRefresh()
  },

  // 手动刷新用户信息（保留手动刷新功能）
  manualRefreshUserInfo() {
    console.log('手动刷新用户信息')
    this.loadUserInfo()
    this.loadUserStats()
    this.refreshStats()
  }
})